CompositeEntityWriter.java
package org.codefilarete.stalactite.engine.configurer.resolver.map;
import java.util.Collection;
import java.util.Map;
import org.codefilarete.stalactite.engine.runtime.CollectionUpdater.EntityWriter;
import org.codefilarete.tool.Duo;
/**
* {@link EntityWriter} delegating every write operation to a list of {@link EntityWriter}, in order. Used to cascade
* to both the key and the value persisters when both sides of the {@link Map} are entities.
*
* @param <C> managed element type (here a {@link Map.Entry})
* @author Guillaume Mary
*/
class CompositeEntityWriter<C> implements EntityWriter<C, Object> {
private final Collection<? extends EntityWriter<C, ?>> delegates;
CompositeEntityWriter(Collection<? extends EntityWriter<C, ?>> delegates) {
this.delegates = delegates;
}
@Override
public void update(Iterable<? extends Duo<C, C>> differencesIterable, boolean allColumnsStatement) {
delegates.forEach(writer -> writer.update(differencesIterable, allColumnsStatement));
}
@Override
public void delete(Iterable<? extends C> entities) {
delegates.forEach(writer -> writer.delete(entities));
}
@Override
public void insert(Iterable<? extends C> entities) {
delegates.forEach(writer -> writer.insert(entities));
}
@Override
public void persist(Iterable<? extends C> entities) {
delegates.forEach(writer -> writer.persist(entities));
}
@Override
public void updateById(Iterable<? extends C> entities) {
delegates.forEach(writer -> writer.updateById(entities));
}
}